package com.yss.reportworld.service;

import com.yss.common.core.domain.TreeNode;
import com.yss.reportworld.domain.Database;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yss.reportworld.domain.DatabaseDispose;

import java.util.List;
import java.util.Map;

/**
 * 基础数据Service接口
 *
 * @author yss
 * @date 2023-03-29
 */
public interface IDatabaseService extends IService<Database> {

    /**
     * 查询基础数据列表
     *
     * @param database 基础数据
     * @return 基础数据集合
     */
    public List<Database> selectDatabaseList(Database database);


    /**
     * 查询基础数据树结构信息
     *
     * @return 基础数据树信息集合
     */
    public List<TreeNode> selectDatabaseTreeList();
    /**
     * 通过编码查询基础数据
     * @param database
     * @return
     */
    public Database queryDatabaseOne(Database database);
    /**
     * 查询基础数据
     *
     * @param database
     */
    public Database getDatabaseById(Database database);
    /**
     * 新增基础数据
     *
     * @param database
     */
    public void addDataBase(Database database);

    /**
     * 修改基础数据
     *
     * @param database
     */
    public void editDataBase(Database database);

    /**
     * 删除基础数据
     *
     * @param database
     */
    public void delDataBase(Database database);

    /**
     * 构建基础数据信息，可以生成表和需要得配置信息，包括备份和升级策略信息
     */
    public void structureDataBase(Database database);

    /**
     * 获取基础信息表格配置
     */
    public List<DatabaseDispose> getDataBaseTableInfo(String queryJson);

    /**
     * 通过sql查询数据 分页
     *
     * @param queryJson
     * @return
     */
    public Map<String, Object> queryDataBaseByCode(String queryJson);

    /**
     * 新增基础数据
     *
     * @throws Exception
     */

    public void addDataBaseInfo(String addJson);

    /* *
     * 修改基础数据
     *
     * @param queryJson
     * @param ids
     * @throws Exception
     */
    public void updateDataBaseInfo(String updateJson);

    /**
     * 删除基础数据
     *
     * @param delJson
     * @throws Exception
     */
    public void deleteDataBaseInfo(String delJson);

    /**
     * 批量修改状态和版本号
     */

    public void handleUpdateBatch(String updateJson);

    /**
     * 导出EXECL文件,按照配置的显示字段信息导出
     *
     * @param queryJson
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> dataBaseExecl(String queryJson);


    /**
     * 导出JSON的时候查询所有数据
     */
    public Map<String, List<Object>> queryAllDataList(String downversion);


    /**
     * 导出SQL语句
     *
     * @param queryJson
     * @return
     * @throws Exception
     */
    public String dataBaseSql(String queryJson);

}
